<?php
	header('content-type: application/json; charset=utf-8');
	//header("Access-Control-Allow-Origin: *"); 
	require_once('header.php');

	if(!empty($_GET['action'])) {
		$action = $_GET['action'];
	}
	elseif(!empty($_POST['action'])){
		$action = $_POST['action'];
	}
	else {
		parse_str(file_get_contents('php://input'),$data);
		$action = $data['action'];
	}

	if(!empty($action)) {
        	switch($action){
	            	case 'connexion':
        	        	if ((isset($_GET['login']) && !empty($_GET['login'])) && (isset($_GET['password']) && !empty($_GET['password']))) {
                	    		include_once('TMembre.php');
                    			$result = TMembre::isUserExist($_GET['login'], $_GET['password']);
					error_log("[Action.php] isUserExist ==> $result \n", 3, "/var/www/application/tacks-php.log");

					if($result) {
						$login = $_GET['login'];
                    				$droit = TMembre::getUserDroit($login);
                    				error_log("[Action.php] Droit de l'utilisateur ==> $droit \n", 3, "/var/www/application/tacks-php.log");
                    				$id_famille = TMembre::getUserFamillyId($login);
                    				error_log("[Action.php] Id famille de l'utilisateur ==> $id_famille \n", 3, "/var/www/application/tacks-php.log");
						$id_membre = TMembre::getIdMembre($login);
						error_log("[Action.php] Id membre de l'utilisateur ==> $id_membre \n", 3, "/var/www/application/tacks-php.log");
                    				if(!empty($droit)) {
                            				$json = array("status" => 1, "msg" => "Connexion effectuée", "login" => $login, "droit" => $droit, "id_famille" => $id_famille,"id_membre" => $id_membre);
                            				echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
                            			}
                       			}else {
                            			$json = array("status" => 0, "msg" => "Login ou password faux");
                            			echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
                    			}
                    		}else{
					exit('Bad code');
                   		}
                	break;
                	case 'addUser':
                		include_once('TMembre.php');
                		$user_array = array();
                		$values = "{$_GET['nom']} {$_GET['prenom']} {$_GET['email']} {$_GET['tel']} {$_GET['droit']} {$_GET['login']} {$_GET['password']} {$_GET['pass_confirm']}";
                		error_log("[TMembre.php] DEBUG: $values \n", 3, "/var/www/application/tacks-php.log");
                		// on teste l'existence de nos variables. On teste également si elles ne sont pas vides
                		if ((isset($_GET['nom']) && !empty($_GET['nom'])) && (isset($_GET['prenom']) && !empty($_GET['prenom']))
                				&& (isset($_GET['email']) && !empty($_GET['email'])) && (isset($_GET['tel']) && !empty($_GET['tel']))
                				&& (isset($_GET['droit']) && !empty($_GET['droit'])) && (isset($_GET['login']) && !empty($_GET['login']))
                				&& (isset($_GET['password']) && !empty($_GET['password'])) && (isset($_GET['id_membre']) && !empty($_GET['id_membre'])) 						&& (isset($_GET['pass_confirm']) && !empty($_GET['pass_confirm']))) {
                					// on teste les deux mots de passe
							$email = base64_decode($_GET['email']);
                					if ($_GET['password'] != $_GET['pass_confirm']) {
                						$erreur = 'Les 2 mots de passe sont différents.';
                						error_log("[TMembre.php] Error: $erreur \n", 3, "/var/www/application/tacks-php.log");
                						$json = array("status" => 2, "msg" => "$erreur");
                						echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
                					} else {
	                					$user_array = array(
	                							'nom' => "{$_GET['nom']}",
	                							'prenom' => "{$_GET['prenom']}",
	                							'email' => "$email",
	                							'tel' => "{$_GET['tel']}",
	                							'droit' => "{$_GET['droit']}",
	                							'login' => "{$_GET['login']}",
	                							'password' => "{$_GET['password']}",
	                					);
	                					$isUserCreated = TMembre::addUser($user_array);
	                					if ($isUserCreated) {
	                						$json = array("status" => 1, "msg" => "New user is created successfully");
	                						echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
									
									// Ajouter dans event 
									include_once('TEvenement.php');
									$s_description = "a ajouté un nouvel utilisateur {$_GET['nom']} {$_GET['prenom']}";
									TEvenement::addEventNew(0,$s_description, $_GET['id_membre']);
									//Envois d'email au nouveau utilisateur
									$subject = "Création de votre compte TACKS";
									$login = "{$_GET['login']}";
									$password = "{$_GET['password']}";
									$message = "<p>Bonjour Monsieur ".$_GET['nom']." ". $_GET['prenom']."</p> Votre compte Tacks a été créé, vous pouvez dès à présent y acceder avec votre <u></br>login: $login</u> et le <u>mot de passe: $password</u>. </br>Cela depuis l'application TACKS. <p> Cordialement,</p>  <p>TACKS TEAM</p>";

									include_once('TSendMail.php');
									$ret = TSendMail::sendEmailToUserCreated($_GET['nom'], $_GET['prenom'], $email, $subject, $message);

	                					} else {
	                						$json = array("status" => 3, "msg" => "Créaction utlisateur FAILED");
	                						echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
	                					}
                				}
                			} else {
                				$error = "Au moins un champ est vide";
                				$json = array("status" => 0, "msg" => "$error");
                				echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
                			}
                		break;
                		case 'getFamillyUsers':
                			include_once('TMembre.php');
                			$result = TMembre::getFamillyListUser("1");
                			$json = array("status" => 1, "msg" => "Get familly list user success !", "listUsers" => "$result");
                			echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
                		break;

				case 'getUserInfos':
					if (isset($_GET['login']) && !empty($_GET['login'])) {
						$login = $_GET['login'];
						include_once('TMembre.php');
	                    			$result = TMembre::getUserInfos($login);
	                    			$json = array("status" => 1, "msg" => "Get user infos success", "infosUser" => "$result");

	                    			$json_encode = json_encode($json);
                            			error_log("[Action.php] DEGUB: GetFamillyUsers: $json_encode \n", 3, "/var/www/application/tacks-php.log");

	                    			echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';

					}else {
	        		        	$json = array("status" => 0, "msg" => "Get user infos failed");
	        	        		echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
			            	}
		            	break;

				case 'deleteUser':
				    if ((isset($_GET['login']) && !empty($_GET['login'])) && (isset($_GET['id_membre']) && !empty($_GET['id_membre']))) {
	        	            	$login = $_GET['login'];
		                    	include_once('TMembre.php');
		                    	$result = TMembre::deleteUser($login);

					include_once('TEvenement.php');
					$login = $_GET['login'];
					$s_description = "a supprimé un utilisateur avec le login <b>$login</b>";
					$i_idMembre = $_GET['id_membre'];
					TEvenement::addEventNew(0,$s_description,$i_idMembre);

						if ($result) {
							$json = array("status" => 1, "msg" => "User: $login deleted with success");
							echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
						}else {
							$json = array("status" => 0, "msg" => "Try to delete $login failed");
	                                	       	echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
						}
					}
				break;

				case 'updateUserDroit':
					if ((isset($_GET['login']) && !empty($_GET['login'])) && (isset($_GET['droit']) && !empty($_GET['droit'])) && (isset($_GET['id_membre']) && !empty($_GET['id_membre']))) {

						include_once('TMembre.php');
						$result = TMembre::updateUserDroit($_GET['login'], $_GET['droit']);

						include_once('TEvenement.php');
						$login = $_GET['login'];
						$s_description = "a changé les droits d'un utilisateur avec le login <b>$login</b>";
						$i_idMembre = $_GET['id_membre'];
						TEvenement::addEventNew(0,$s_description,$i_idMembre);

						if ($result) {
							$json = array("status" => 1, "msg" => " Update user droit success");
							echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
						}else {
							$json = array("status" => 0, "msg" => " Update user droit failed");
							echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
						}
					}
	            		break;
				case 'UpdateUserPassword':
					if ((isset($_GET['login']) && !empty($_GET['login'])) && (isset($_GET['password']) && !empty($_GET['password'])) && (isset($_GET['pass_confirm']) && !empty($_GET['pass_confirm']))) {
						// on teste les deux mots de passe
                		if ($_GET['password'] != $_GET['pass_confirm']) {
                    		$erreur = 'Les 2 mots de passe sont différents.';
							error_log("[TMembre.php] Error: $erreur \n", 3, "/var/www/application/tacks-php.log");
                        	$json = array("status" => 2, "msg" => "$erreur");
                        	echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
                    	} else {
                    		$result = true;
							$login = $_GET['login'];
							$password = $_GET['password'];
                    		include_once('TMembre.php');
                        	TMembre::UpdateUserPassword($login, $password);

                        	if ($result) {
                        		$json = array("status" => 1, "msg" => " Update password success");
                            	echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
                        	}else {
                        		$json = array("status" => 0, "msg" => " Update password failed");
                            	echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
                        	}
						}
					}
	            		break;

				case 'updateUserInfos':
					if ((isset($_GET['login']) && !empty($_GET['login'])) && (isset($_GET['email']) && !empty($_GET['email'])) && (isset($_GET['tel']) && !empty($_GET['tel']))&& (isset($_GET['id_membre']) && !empty($_GET['id_membre']))) {
						include_once('TMembre.php');
						$email = base64_decode($_GET['email']);
						$result = TMembre::updateUserInfos($_GET['login'], $email, $_GET['tel']);
						error_log("[Action.php] DEGUB: updateUserInfos: $result \n", 3, "/var/www/application/tacks-php.log");
						
						include_once('TEvenement.php');
						$s_description = "a fait une mise à jour de ses informations personnelles";
						$i_idMembre = $_GET['id_membre'];
						TEvenement::addEventNew(0,$s_description,$i_idMembre);			
						
						if ($result) {
							$json = array("status" => 1, "msg" => " Update user infos success");
							echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
						}else {
							$json = array("status" => 0, "msg" => " Update user infos failed");
							echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
						}
					}
	            		break;

        		case 'videoStream':
					error_log("[Action.php] DEGUB: videoStream: {$_GET['login']} {$_GET['id_camera']} {$_GET['idMembre']} \n", 3, "/var/www/application/tacks-php.log");
            		$login = $_GET['login'];
					$idMembre = $_GET['idMembre'];
					$id_camera = $_GET['id_camera'];
					if (!empty($login) && !empty($idMembre) && !empty($id_camera)) {	            												include_once('TCamera.php');
	            		$res = TCamera::videoStream($_GET['id_camera']);
						//$cmd ="php testVideoStream.php";
						//$res = exec($cmd);
						error_log("[Action.php] DEGUB: videoStream 2: $res \n", 3, "/var/www/application/tacks-php.log");

	            		if (!empty($res)) {
							$json = array("status" => 1, "msg" => "Camera allumee");
	            			echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
            			}
					}else {
						$json = array("status" => 0, "msg" => "un parametre au moins vide");
                        echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
					}
            		break;
            		
            	case 'videoStop':
            		if ((isset($_GET['login']) && !empty($_GET['login'])) && (isset($_GET['idMembre']) && !empty($_GET['idMembre'])) && (isset($_GET['id_camera']) && !empty($_GET['id_camera']))) {
            			include_once('TCamera.php');
            			TCamera::videoStop($_GET['id_camera']);
            			$json = array("status" => 1, "msg" => "Cemera stoppee");
            			echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
            		}
            		break;
            	
            case 'resetPassword':
				if (!empty($_GET['email']) && !empty($_GET['confirm_email'])) {
            			$emailA = $_GET['email'];
            			$email = base64_decode($emailA);
						$confirm_email = base64_decode($_GET['confirm_email']);
						error_log("[Action.php] DEGUB: resetPassword: $email $confirm_email\n", 3, "/var/www/application/tacks-php.log");
						
            			if ($email == $confirm_email) {
	            			include_once('TMembre.php');
			            	$res = TMembre::getUserFromEmail($email);
							error_log("[Action.php] DEGUB: resetPassword: ======= $res \n", 3, "/var/www/application/tacks-php.log");
			            	$res = json_decode($res, true);
							$login = $res[0]["login"];
							$nom = $res[0]["nom"];
							$prenom = $res[0]["prenom"];
							error_log("[Action.php] DEGUB: resetPassword: $login $nom $prenom \n", 3, "/var/www/application/tacks-php.log");
							
	            			if (!empty($login) && !empty($nom) && !empty($prenom)) {
	            				$pwd = TMembre::randomPassword();
	            				if (!empty($pwd)) {
	            					$res = TMembre::UpdateUserPassword($login, $pwd);
	            					include_once ('TSendMail.php');
	            					$subject = "Votre nouveau mot de passe";
	            					$message = "<p>Monsieur ".$nom." ". $prenom."</p> Veuillez trouvez ci-dessous votre mot de passse de réinitialisation.<u> <p><b> Login:</b> $login </p> <p><b>Mot de passe:</b> $pwd</p>. <p> Cordialement,</p>  <p>TACKS TEAM</p>";
	            					TSendMail::sendEmailToUserCreated($nom, $prenom, $email, $subject, $message);
	
	            					$json = array("status" => 1, "msg" => "Mot de passe est reunitialise");
	            					echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
	            				}
	            				$json = array("status" => 3, "msg" =>"Mot de passe non reinitialise");
								echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
		            			}
	            		} else {
            				$json = array("status" => 2, "msg" => "Vos deux adresses email sont différents");
	            			echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
	            		}
	            	}else {
						$json = array("status" => 0, "msg" => "Au moins un champ vide");
            			echo $_GET['jsoncallback'] . '(' . json_encode($json) . ');';
					}
            		break;

            	case 'listeEquipements':
            		include_once('TEquipement.php');
            		TEquipement::getListeEquipementsNew();
            		break;
	            case 'listeEquipements':
	            	include_once('TEquipement.php');
	                TEquipement::getListeEquipementsNew();
	            	break;
            	case 'listeEquipementsParPiece':

	            	break;
	            	
				case 'getPieces':
					include_once('TPiece.php');
					TPiece::getPieces();
				break;
				case 'coupleEquipment':
					include_once('TEquipement.php');
					TEquipement::coupleEquipment();
				break;
	            		case 'changerEtat':
	            			include_once('TEquipement.php');
	                  		TEquipement::changerEtat($data['b_etat'],$data['i_idEquipement'],$data['type']);
	            		break;
				case 'addEquipment':
					include_once('TEquipement.php');
					//TEquipement::addEquipment($_POST['s_name'],$_POST['s_type'],$_POST['i_codeRadio'],$_POST['i_coordX'],$_POST['i_coordY'],$_POST['i_room']);
					TEquipement::addEquipmentNew($_POST['s_name'],$_POST['s_type'],$_POST['i_codeRadio'],$_POST['i_coordX'],$_POST['i_coordY'],$_POST['i_idMembre'],$_POST['i_room']);
				break;
				case 'deleteEquipment':
					include_once('TEquipement.php');
					TEquipement::deleteEquipment($data['i_idEquipment'],$data['i_idMembre']);
				break;
				case 'saveChangesEquipment':
					include_once('TEquipement.php');
					TEquipement::saveChangesEquipment($data['i_idEquipement'],$data['s_nameEquipement'],$data['s_type'],$data['i_coordX'],$data['i_coordY'],$data['s_heureAllumage'],$data['s_heureExtinction'],$data['temperatureAllumage'],$data['temperatureExtinction'],$data['i_idMembre']);
				break;
				case 'addEvent':
					error_log("[Action.php] id membre ==> ".$_POST['idMembre']." ,description ==> ".$_POST['description']." \n", 3, "/var/www/application/tacks-php.log");
					include_once('TEvenement.php');
					TEvenement::addEvent($_POST['date'],$_POST['isLogement'],$_POST['heure_event'],$_POST['periode'],$_POST['description'],$_POST['idMembre']);
				break;
				case 'listeEvenementsLogement':
					include_once('TEvenement.php');
					TEvenement::getListeEvenementsLogement();
				break;
				case 'listeEvenementsReglage':
					include_once('TEvenement.php');
					TEvenement::getListeEvenementsReglage();
				break;
				case 'getTemperatures':
					include_once('TPiece.php');
					TPiece::getTemperatures();
				break;
	           		 default:
					echo "Action recu: ".$_GET['action'];
	                		echo 'ACTION INCORRECTE !';
	            		break;
        		}
		}
		else {
			echo "Aucune action recu";
			print_r($_POST);
			print_r($_GET);
		}
?>
